package com.proyecto.track.action;

import java.util.List;

import org.apache.log4j.Logger;

import com.opensymphony.xwork2.ActionSupport;

import com.proyecto.track.action.dto.ProyectoDTO;
import com.proyecto.track.bo.Proyecto;
import com.proyecto.track.service.IProyectoService;

@SuppressWarnings("serial")
public class ProyectoActionJSON extends ActionSupport {

	private Logger log = Logger.getLogger(ProyectoAction.class);

	/** El service, inyectado por Spring */
	private IProyectoService proyectoService;
	/** La lista de DTOs de Proyecto **/
	private List<ProyectoDTO> aaData;
	private ProyectoDTO proyecto;
	private boolean sobraTiempo;
	private Long horasAsignadas;
	private Long horasRestantesProyecto;
	private Long horasTotalesTareas;
	private Long idProyecto;

	public ProyectoDTO getProyecto() {
		return proyecto;
	}

	public void setProyecto(ProyectoDTO proyecto) {
		this.proyecto = proyecto;
	}

	public boolean isSobraTiempo() {
		return sobraTiempo;
	}

	public void setSobraTiempo(boolean sobraTiempo) {
		this.sobraTiempo = sobraTiempo;
	}

	public Long getHorasAsignadas() {
		return horasAsignadas;
	}

	public void setHorasAsignadas(Long horasAsignadas) {
		this.horasAsignadas = horasAsignadas;
	}

	/**
	 * Lista los proyectos utilizando los DTO para JSON
	 * 
	 * @return el String que indica el result para struts
	 */
	public String listarProyectosJSON() {
		aaData = proyectoService.listarProyectosDTO();
		return SUCCESS;
	}

	public String confirmarHoras() {
		log.info(this.getClass().getCanonicalName()
				+ " - Confirmando si quedan horas disponibles");
		if (proyecto != null) {
			proyecto = proyectoService.recuperarProyecto(
					proyecto.getIdProyecto()).toDTO();
			log.info(horasAsignadas);
			log.info(proyecto.getHorasAsignadas());

			if (horasAsignadas > proyecto.getHorasAsignadas())
				sobraTiempo = false;
			else
				sobraTiempo = true;
		}
		return SUCCESS;
	}

	public String horasActualizadas() {
		if (idProyecto != null) {
			Proyecto p = proyectoService.recuperarProyecto(idProyecto);
			horasRestantesProyecto = p.recuperarhorasRestantesProyecto();
			horasTotalesTareas = p.recuperarHorasTotalesTareas();
			horasAsignadas = p.getHorasAsignadas();
		}
		return SUCCESS;
	}

	public void setProyectoService(IProyectoService proyectoService) {
		this.proyectoService = proyectoService;
	}

	public void setProyectos(List<ProyectoDTO> proyectos) {
		this.aaData = proyectos;
	}

	public List<ProyectoDTO> getProyectos() {
		return aaData;
	}

	public void setHorasRestantesProyecto(Long horasRestantesProyecto) {
		this.horasRestantesProyecto = horasRestantesProyecto;
	}

	public Long getHorasRestantesProyecto() {
		return horasRestantesProyecto;
	}

	public void setHorasTotalesTareas(Long horasTotalesTareas) {
		this.horasTotalesTareas = horasTotalesTareas;
	}

	public Long getHorasTotalesTareas() {
		return horasTotalesTareas;
	}

	public void setIdProyecto(Long idProyecto) {
		this.idProyecto = idProyecto;
	}

	public Long getIdProyecto() {
		return idProyecto;
	}
}
